#ifndef SQLITEMANAGE_H
#define SQLITEMANAGE_H

#include <QObject>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlError>
#include <QSqlRecord>
#include <QStringList>
#include <QVariant>
#include <QDebug>

class SqliteManage:public QObject
{
    Q_OBJECT
public:
    explicit SqliteManage(const QString &connectionName = QString());

    //explicit SqliteManage(QObject *parent = nullptr);
    ~SqliteManage();

    // 打开数据库
    bool openDatabase(const QString &dbName);

    // 关闭数据库
    void closeDatabase();

    // 创建表
    bool createTable(const QString &tableName, const QStringList &fields);

    // 插入数据
    bool insertData(const QString &tableName, const QVariantMap &data);

    // 删除数据
    bool deleteData(const QString &tableName, const QString &condition);

    // 更新数据
    bool updateData(const QString &tableName, const QVariantMap &data, const QString &condition);

    // 查询数据
    QList<QVariantMap> selectData(const QString &tableName, const QString &condition = "", const QStringList &fields = QStringList());

    // 执行SQL语句
    bool executeSql(const QString &sql);

    // 获取最后错误信息
    QString lastError() const;

    // 检查表是否存在
    bool tableExists(const QString &tableName);

    private:
        QSqlDatabase m_db;
        QString m_connectionName;
        QString m_lastError;
};

#endif // SQLITEMANAGE_H
